From: Anthony PERARD Date: Thu, 13 Oct 2022 13:05:13 +0000 (+0100) Subject: tools: Rework linking options for ocaml binding libraries X-Git-Tag: archive/raspbian/4.17.0-1+rpi1^2~33^2~119 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=5310a3aa5026fb27d6834306d920d6207a1e0898;p=xen.git tools: Rework linking options for ocaml binding libraries Using a full path to the C libraries when preparing one of the ocaml binding for those libraries make the binding unusable by external project. The full path is somehow embedded and reused by the external project when linking against the binding. Instead, we will use the proper way to link a library, by using '-l'. For in-tree build, we also need to provide the search directory via '-L'. (The search path -L are still be embedded, but at least that doesn't prevent the ocaml binding from been used.) Related-to: xen-project/xen#96 Signed-off-by: Anthony PERARD Acked-by: Christian Lindig Tested-by: Andrew Cooper Release-acked-by: Henry Wang --- diff --git a/tools/Rules.mk b/tools/Rules.mk index a165dc4bda..34d495fff7 100644 --- a/tools/Rules.mk +++ b/tools/Rules.mk @@ -113,6 +113,14 @@ define xenlibs-ldflags $(foreach lib,$(1),-L$(XEN_ROOT)/tools/libs/$(lib)) endef +# Flags for linking against all Xen libraries listed in $(1) but by making use +# of -L and -l instead of providing a path to the shared library. +define xenlibs-ldflags-ldlibs + $(call xenlibs-ldflags,$(1)) \ + $(foreach lib,$(1), -l$(FILENAME_$(lib))) \ + $(foreach lib,$(1),$(xenlibs-ldlibs-$(lib))) +endef + define LIB_defs FILENAME_$(1) ?= xen$(1) XEN_libxen$(1) = $$(XEN_ROOT)/tools/libs/$(1) diff --git a/tools/ocaml/libs/eventchn/Makefile b/tools/ocaml/libs/eventchn/Makefile index 7362a28d9e..dc560ba49b 100644 --- a/tools/ocaml/libs/eventchn/Makefile +++ b/tools/ocaml/libs/eventchn/Makefile @@ -8,7 +8,7 @@ OBJS = xeneventchn INTF = $(foreach obj, $(OBJS),$(obj).cmi) LIBS = xeneventchn.cma xeneventchn.cmxa -LIBS_xeneventchn = $(LDLIBS_libxenevtchn) +LIBS_xeneventchn = $(call xenlibs-ldflags-ldlibs,evtchn) all: $(INTF) $(LIBS) $(PROGRAMS) diff --git a/tools/ocaml/libs/xc/Makefile b/tools/ocaml/libs/xc/Makefile index 67acc46bee..3b76e9ad7b 100644 --- a/tools/ocaml/libs/xc/Makefile +++ b/tools/ocaml/libs/xc/Makefile @@ -10,7 +10,7 @@ OBJS = xenctrl INTF = xenctrl.cmi LIBS = xenctrl.cma xenctrl.cmxa -LIBS_xenctrl = $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) +LIBS_xenctrl = $(call xenlibs-ldflags-ldlibs,ctrl guest) xenctrl_OBJS = $(OBJS) xenctrl_C_OBJS = xenctrl_stubs diff --git a/tools/ocaml/libs/xentoollog/Makefile b/tools/ocaml/libs/xentoollog/Makefile index 9ede2fd124..1645b40faf 100644 --- a/tools/ocaml/libs/xentoollog/Makefile +++ b/tools/ocaml/libs/xentoollog/Makefile @@ -13,7 +13,7 @@ OBJS = xentoollog INTF = xentoollog.cmi LIBS = xentoollog.cma xentoollog.cmxa -LIBS_xentoollog = $(LDLIBS_libxentoollog) +LIBS_xentoollog = $(call xenlibs-ldflags-ldlibs,toollog) xentoollog_OBJS = $(OBJS) xentoollog_C_OBJS = xentoollog_stubs diff --git a/tools/ocaml/libs/xl/Makefile b/tools/ocaml/libs/xl/Makefile index 7c1c4edced..22d6c93aae 100644 --- a/tools/ocaml/libs/xl/Makefile +++ b/tools/ocaml/libs/xl/Makefile @@ -15,7 +15,7 @@ LIBS = xenlight.cma xenlight.cmxa OCAMLINCLUDE += -I ../xentoollog -LIBS_xenlight = $(LDLIBS_libxenlight) +LIBS_xenlight = $(call xenlibs-ldflags-ldlibs,light) xenlight_OBJS = $(OBJS) xenlight_C_OBJS = xenlight_stubs